package pe.gob.osce.sirenas.model.jpa.rectificaciones;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import pe.gob.osce.sirenas.model.jpa.Auditoria;
import pe.gob.osce.sirenas.model.jpa.FichaArbitral;

@Entity
@Table(name="AUD_REG_ESPECIALIDAD", schema="RNAS" )
@SequenceGenerator(name = "sqID_Aud_Especialidad_Academica", sequenceName = "RNAS.ID_AUD_ESPECIALIDAD_ACADEMICA", allocationSize=1)
public class HistorialEspecialidadAcademica implements Serializable{

	
	/**
	 * 
	 */
	private static final long serialVersionUID = -769328846894546720L;
	public static final String NOMBRE_TABLA="ESPECIALIDAD ACADEMICA";
	
	@Id 
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sqID_Aud_Especialidad_Academica")	
	@Column(name="N_ID_RECTIF_ESPECIALIDAD")
	private Long idHistorial;	
	@Column(name="D_FEC_RECTIFICACION")
	private Date fecHistorial;
	@Column(name="N_ID_ESPECIALIDAD")
	private Long idEspecialidad;	
	@Column(name="N_ID_FICHA")
	private Long idFicha;	
	@Column(name="N_IND_ESPECIALIDAD")
	private Integer indEspecialidad;	
	@Column(name="N_ID_AREA_PROFESION")
	private Long idAreaProfesion;	
	@Column(name="N_ID_CENTRO_ESTUDIOS")
	private Long idCentroEstudios;		
	@Column(name="N_ID_PAIS")
	private Long idPais;
	@Column(name="N_IND_TIPO_FORMACION")
	private Integer indTipoFormacion;
	@Column(name="N_IND_GRADO_OBTENIDO")
	private Long indGradoObtenido;
	@Column(name="C_DES_GRADO")
	private String descripcionGrado;
	@Column(name="C_VAL_DURACION")
	private Long duracion;	
	@Column(name="D_FEC_EGRESO")
	private Date fecEgreso;		
	@Column(name="N_IND_ESTADO")
	private Long estado;
	@Embedded
	private Auditoria auditoria;
	@Column(name="C_DES_OTRO_CENTRO")
	private String descripcionOtroCentro;
	
	@Column(name="C_COD_TRAMITE")
	private String codTramite;

	@Column(name="C_COD_REGISTRO")
	private String codRegistro;
	
	
	/**
	 * Metodo que permite obtener codRegistro.
	 * @return codRegistro , tipo String.
	 */
	public String getCodRegistro() {
		return codRegistro;
	}


	/**
	 * Permite actualizar codRegistro.
	 * @param codRegistro, tipo String.
	 */
	public void setCodRegistro(String codRegistro) {
		this.codRegistro = codRegistro;
	}

	@ManyToOne( cascade = { CascadeType.ALL } )
	@JoinColumn(name="N_ID_FICHA", insertable=false, updatable=false)
	private FichaArbitral fichaArbitral;


	/**
	 * Metodo que permite obtener idEspecialidad.
	 * @return idEspecialidad , tipo Long.
	 */
	public Long getIdEspecialidad() {
		return idEspecialidad;
	}


	/**
	 * Permite actualizar idEspecialidad.
	 * @param idEspecialidad, tipo Long.
	 */
	public void setIdEspecialidad(Long idEspecialidad) {
		this.idEspecialidad = idEspecialidad;
	}


	/**
	 * Metodo que permite obtener idFicha.
	 * @return idFicha , tipo Long.
	 */
	public Long getIdFicha() {
		return idFicha;
	}


	/**
	 * Permite actualizar idFicha.
	 * @param idFicha, tipo Long.
	 */
	public void setIdFicha(Long idFicha) {
		this.idFicha = idFicha;
	}


	/**
	 * Metodo que permite obtener indEspecialidad.
	 * @return indEspecialidad , tipo Integer.
	 */
	public Integer getIndEspecialidad() {
		return indEspecialidad;
	}


	/**
	 * Permite actualizar indEspecialidad.
	 * @param indEspecialidad, tipo Integer.
	 */
	public void setIndEspecialidad(Integer indEspecialidad) {
		this.indEspecialidad = indEspecialidad;
	}


	/**
	 * Metodo que permite obtener idAreaProfesion.
	 * @return idAreaProfesion , tipo Long.
	 */
	public Long getIdAreaProfesion() {
		return idAreaProfesion;
	}


	/**
	 * Permite actualizar idAreaProfesion.
	 * @param idAreaProfesion, tipo Long.
	 */
	public void setIdAreaProfesion(Long idAreaProfesion) {
		this.idAreaProfesion = idAreaProfesion;
	}


	/**
	 * Metodo que permite obtener idCentroEstudios.
	 * @return idCentroEstudios , tipo Long.
	 */
	public Long getIdCentroEstudios() {
		return idCentroEstudios;
	}


	/**
	 * Permite actualizar idCentroEstudios.
	 * @param idCentroEstudios, tipo Long.
	 */
	public void setIdCentroEstudios(Long idCentroEstudios) {
		this.idCentroEstudios = idCentroEstudios;
	}


	/**
	 * Metodo que permite obtener idPais.
	 * @return idPais , tipo Long.
	 */
	public Long getIdPais() {
		return idPais;
	}


	/**
	 * Permite actualizar idPais.
	 * @param idPais, tipo Long.
	 */
	public void setIdPais(Long idPais) {
		this.idPais = idPais;
	}


	/**
	 * Metodo que permite obtener indTipoFormacion.
	 * @return indTipoFormacion , tipo Integer.
	 */
	public Integer getIndTipoFormacion() {
		return indTipoFormacion;
	}


	/**
	 * Permite actualizar indTipoFormacion.
	 * @param indTipoFormacion, tipo Integer.
	 */
	public void setIndTipoFormacion(Integer indTipoFormacion) {
		this.indTipoFormacion = indTipoFormacion;
	}



	/**
	 * Metodo que permite obtener indGradoObtenido.
	 * @return indGradoObtenido , tipo Long.
	 */
	public Long getIndGradoObtenido() {
		return indGradoObtenido;
	}


	/**
	 * Permite actualizar indGradoObtenido.
	 * @param indGradoObtenido, tipo Long.
	 */
	public void setIndGradoObtenido(Long indGradoObtenido) {
		this.indGradoObtenido = indGradoObtenido;
	}


	/**
	 * Metodo que permite obtener descripcionGrado.
	 * @return descripcionGrado , tipo String.
	 */
	public String getDescripcionGrado() {
		return descripcionGrado;
	}


	/**
	 * Permite actualizar descripcionGrado.
	 * @param descripcionGrado, tipo String.
	 */
	public void setDescripcionGrado(String descripcionGrado) {
		this.descripcionGrado = descripcionGrado;
	}


	/**
	 * Metodo que permite obtener duracion.
	 * @return duracion , tipo Long.
	 */
	public Long getDuracion() {
		return duracion;
	}


	/**
	 * Permite actualizar duracion.
	 * @param duracion, tipo Long.
	 */
	public void setDuracion(Long duracion) {
		this.duracion = duracion;
	}


	/**
	 * Metodo que permite obtener fecEgreso.
	 * @return fecEgreso , tipo Date.
	 */
	public Date getFecEgreso() {
		return fecEgreso;
	}


	/**
	 * Permite actualizar fecEgreso.
	 * @param fecEgreso, tipo Date.
	 */
	public void setFecEgreso(Date fecEgreso) {
		this.fecEgreso = fecEgreso;
	}


	/**
	 * Metodo que permite obtener estado.
	 * @return estado , tipo Long.
	 */
	public Long getEstado() {
		return estado;
	}


	/**
	 * Permite actualizar estado.
	 * @param estado, tipo Long.
	 */
	public void setEstado(Long estado) {
		this.estado = estado;
	}


	/**
	 * Metodo que permite obtener auditoria.
	 * @return auditoria , tipo Auditoria.
	 */
	public Auditoria getAuditoria() {
		return auditoria;
	}


	/**
	 * Permite actualizar auditoria.
	 * @param auditoria, tipo Auditoria.
	 */
	public void setAuditoria(Auditoria auditoria) {
		this.auditoria = auditoria;
	}


	/**
	 * Metodo que permite obtener descripcionOtroCentro.
	 * @return descripcionOtroCentro , tipo String.
	 */
	public String getDescripcionOtroCentro() {
		return descripcionOtroCentro;
	}


	/**
	 * Permite actualizar descripcionOtroCentro.
	 * @param descripcionOtroCentro, tipo String.
	 */
	public void setDescripcionOtroCentro(String descripcionOtroCentro) {
		this.descripcionOtroCentro = descripcionOtroCentro;
	}


	/**
	 * Metodo que permite obtener fichaArbitral.
	 * @return fichaArbitral , tipo FichaArbitral.
	 */
	public FichaArbitral getFichaArbitral() {
		return fichaArbitral;
	}


	/**
	 * Permite actualizar fichaArbitral.
	 * @param fichaArbitral, tipo FichaArbitral.
	 */
	public void setFichaArbitral(FichaArbitral fichaArbitral) {
		this.fichaArbitral = fichaArbitral;
	}




	public Long getIdHistorial() {
		return idHistorial;
	}


	public void setIdHistorial(Long idHistorial) {
		this.idHistorial = idHistorial;
	}


	public Date getFecHistorial() {
		return fecHistorial;
	}


	public void setFecHistorial(Date fecHistorial) {
		this.fecHistorial = fecHistorial;
	}


	public String getCodTramite() {
		return codTramite;
	}


	public void setCodTramite(String codTramite) {
		this.codTramite = codTramite;
	}


	

}
